#include <iostream>
#include <vector>
using namespace std;

vector<int> grayCode(int n) {
	// Start typing your C/C++ solution below
	// DO NOT write int main() function
	if(n==0){
		vector<int> res;
		res.push_back(0);
		return res;
	}
	if(n==1){
		vector<int> res;
		res.push_back(0);
		res.push_back(1);
		return res;
	}

	vector<int> preRes = grayCode(n-1);
	vector<int> res;
	// prefix 0
	for(int i=0; i<preRes.size(); ++i){
		res.push_back(preRes[i]);
	}
	// prefix 1
	for(int i=preRes.size()-1; i>=0; --i){
		res.push_back(preRes[i] | (0x1<<(n-1)));
	}
	return res;
}



int main(){
	


	return 0;
}